package exercises.newcoder.solution;

import exercises.newcoder.util.ListNode;

/**
 * <a href="https://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef?tpId=13&tqId=23450&ru=/ta/sql-quick-study&qru=/ta/sql-quick-study/question-ranking">
 * JZ56 删除链表中重复的结点</a>
 *
 * <p><span color="#87CEEB">描述:</span>
 * 在一个排序的链表中，存在重复的结点，请删除该链表中重复的结点，重复的结点不保留，返回链表头指针。 例如，链表1->2->3->3->4->4->5 处理后为 1->2->5
 * <p>
 * 示例1
 * <p>
 * 输入：
 * {1,2,3,3,4,4,5}
 * <p>
 * 返回值：
 * {1,2,5}
 * <p>
 *
 * @author or2
 * @date 2021年10月04日 时间: 9:45
 */
public class JZ56 {
    public ListNode deleteDuplication(ListNode pHead) {
        ListNode head = new ListNode(0);
        head.next = pHead;
        pHead = head;

        while (pHead.next != null && pHead.next.next != null) {
            if (pHead.next.val == pHead.next.next.val) {
                int remove = pHead.next.val;
                while (pHead.next != null && pHead.next.val == remove)
                    pHead.next = pHead.next.next;
            } else
                pHead = pHead.next;
        }

        return head.next;
    }
}
